package com.yuhang.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuhang.demo.dto.request.RuleAddRequest;
import com.yuhang.demo.dto.request.RuleUpdateRequest;
import com.yuhang.demo.dto.response.PageResult;
import com.yuhang.demo.dto.response.Result;
import com.yuhang.demo.entity.RuleInfo;

public interface RuleInfoService extends IService<RuleInfo> {
    /**
     * 新增规则
     * @param request 新增请求
     * @return 规则ID
     */
    Result<Long> addRule(RuleAddRequest request);

    /**
     * 更新规则
     * @param request 更新请求
     * @return 操作结果
     */
    Result<Boolean> updateRule(RuleUpdateRequest request);

    /**
     * 删除规则（逻辑删除）
     * @param id 规则ID
     * @return 操作结果
     */
    Result<Boolean> deleteRule(Long id);

    /**
     * 分页查询规则列表（适配新字段和两类规则）
     * @param pageNum 当前页码
     * @param pageSize 每页条数
     * @param ruleType 规则类型（DRUG_GENDER/MEDICAL_CHILD）
     * @param itemName 项目名称（药品通用名/医疗服务项目名称，模糊查询）
     * @param limitGender 限定性别（仅药品规则）
     * @param nationalItemCode 国家项目代码（仅医疗服务项目规则）
     * @return 分页结果
     */
    Result<PageResult<RuleInfo>> getRulePage(
            Integer pageNum,
            Integer pageSize,
            String ruleType,
            String itemName, // 原 drugGenericName 改为 itemName
            String limitGender,
            String nationalItemCode // 新增：医疗服务项目代码筛选
    );
    /**
     * 根据ID查询规则详情
     * @param id 规则ID
     * @return 规则详情
     */
    Result<RuleInfo> getRuleById(Long id);
}
